Background

One of the main intersessional tasks for the SSC for Bottom Fish and Marine Ecosystems in 2019-2020 is to come to consensus on a temporal and spatial scale for sharing data among members. In the discussions during the 2019 NPFC Scientific Committee meetings, a number of ideas were proposed and then these were modified and identified as potential options during intersessional discussions in May-July. There were four main proposals regarding the temporal and spatial resolution for sharing data within the NPFC:

Option 1: A spatial resolution of 0.5 degrees (30“) longitude by 0.5 degrees (30”) latitude and a temporal resolution 5 years (preferred in preliminary discussions)

Option 2: A spatial resolution 5 nautical mile x 5 nautical mile (8 km x 8 km) and a temporal resolution of the entire time series (1991-present)

Option 3: A spatial resolution of 0.1 degrees longitude by 0.1 degrees latitude and a temporal resolution of 5 years

Option 4: A geodesic hexagonal mesh with resolution level 12 or 13 of ISEA3H grid type (described at https://github.com/r-barnes/dggridR/) and a 5 year temporal resolution

In the intervening month(s), I have written a package for R that will allow each of us to test the output maps and data from each of these options (plus others that you would like to explore). The package can be downloaded at https://github.com/rooperc4/NPFC_BottomFishingFootprint/ or the code can be run from the example below. The objective of this package is to provide tools that will help us define and map the appropriate temporal and spatial footprint for bottom contacting fishing gear for the NPFC convention area.

To install the package run

# install.packages("devtools")
#devtools::install_github("rooperc4/NPFC_BottomFishingFootprint")

Methods

The example below generates random data for the western North Pacific. The data is the positions of sets for three gear types (longline, trap and gillnet). The data were generated for the western North Pacific for 20 years (1991-2020) with a random number of sets (between 10 and 200) and a random number of vessels (between 1 and 10) operating with each gear type in each year.

YearSet<-seq(1991,2020,1)
GearSet<-c("Gillnet","Longline","Trap")
W_NP<-extent(169,171,42,48)
raster1<-raster(W_NP,resolution=.01,crs="+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs",vals=1)

effort_data<-array(dim=c(0,5))
colnames(effort_data)<-c("Year","Gear_type","Vessel","Longitude","Latitude")
for(i in 1:length(YearSet)){
  for(j in 1:length(GearSet)){
      
      sets<-sample(seq(10,200,1),1)
      sample1<-sampleRandom(raster1,size=sets,xy=TRUE)
      sample1<-data.frame(Year=rep(YearSet[i],sets),Gear_type=rep(GearSet[j],sets),Vessel=rep(paste0("Vessel_",sample(seq(1,10,1),1)),sets),Longitude=sample1[,1],Latitude=sample1[,2],stringsAsFactors=FALSE)
effort_data<-rbind(effort_data,sample1)}}

The example data looks like this (when you use your own data you can copy this format).

head(effort_data)
##   Year Gear_type   Vessel Longitude Latitude
## 1 1991   Gillnet Vessel_4   169.575   45.605
## 2 1991   Gillnet Vessel_4   169.435   44.795
## 3 1991   Gillnet Vessel_4   169.415   44.065
## 4 1991   Gillnet Vessel_4   170.335   43.935
## 5 1991   Gillnet Vessel_4   169.735   45.085
## 6 1991   Gillnet Vessel_4   169.295   45.165

Package functions

The package has two main functions. The first is called footprint_data. This function takes a raw fishing effort data frame and summarizes it for mapping, creating a footprint_data_object. The raw fishing effort data should include rows for each individual fishing event (set), such as a trawl haul or longline set. For each set the year, latitude, longitude, gear type and a vessel identifier must be included. A minimum number of vessels can be specified so that the output does not include grid cells where less than this number of vessels fished a given gear type in a given year group. The default value is 3 (consistent with Canadian requirements for confidentiality), The starting year of interest (usually the earliest year in the data) and how many years should be combined should be specified. Additionally, the spatial resolution that is required and the units of that spatial resolution (defaults are 0.5 decimal degrees of latitude and longitude) need to be specified. A map projection (in proj4 format) should also be given.

The function outputs a list of eight data objects that include a data frame of raw fishing effort data (fishing_effort_data) summarized to the spatial resolution provided for each fishing event with an additional column for the year group to which the event belongs. There should be one record in this table for each of the fishing events that were input. This table may not be appropriate to share with the NPFC, as it will contain records for grid cells where fewer than the minimum number of vessels fished. The second data object output by the function (fishing_footprint_table) is a table that summarizes the fishing events by year group, latitude, longitude and gear type. This table produces the number of sets that occurred in each year by each gear type at a grid cell with the spatial resolution specified and the center position given by the latitude and longitude where it was grouped. In addition, a column specifies the number of vessels that are included at each grid cell. The table will not include grid cells where there were fewer than the minimum number of vessels fishing. This table may be appropriate for sharing with the wider group, as it will meet confidentiality rules. The third item is a table of the number of grid cells by gear type and year group where the minimum number of vessels was not met (not_enough_vessels). This table indicates how many grid cells for which data exists, but cannot be reported. The fourth item is the year groups identified from the inputs (years) and the fifth item is the gear types represented in the data (gear_types). The last three items are the spatial resolution and units of the data summary and the map projection of the data (map_projection). These last items are for tracking inputs and outputs and are needed for creating the figures using the footprint_map function.

The second function is called footprint_map. This function takes the fishing effort data object (created by the footprint_data function) and makes a raster map of the effort data. The outputs are a raster stack with layers for each year group and gear type combination and a .png figure for each year group and gear type combination. The .png object is overlaid on a static google map of the eastern or western Pacific, based on the input longitude values of the data. The footprint_data_object must be a list including a data frame of raw fishing effort data (Fishing_effort_data), spatially, temporally effort data compiled by gear type (fishing_footprint_table), the number of grid cells where their are not enough vessels represented to plot the data due to confidentiality rules (not_enough_vessels), gear type-year-year groups over which the data is summarized (years), gear types over which the data is summarized (gear_types), the spatial resolution of the data summary, the spatial resolution units (units) and the map projection of the data (map_projection). These 8 items are ouput from the footprint_data function.

Results

Option 1: A spatial resolution of 0.5 degrees (30“) longitude by 0.5 degrees (30”) latitude and a temporal resolution 5 years

To do option 1, run this code.

#Specify the input spatial resolution and units
Spatial_resolution_dd<-data.frame(Spatial_resolution=.5,Units="dd")

#Specify the start year and the number of years to combine
Start_year<-1991
Years_to_combine<-5

#What is the minimum number of vessels that need to fish a grid cell in order for the data to be shared
Minimum_vessels<-3

#Specify the map projection or crs in proj4 format
map_projection_dd<-"+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"

#Call the function
example_dd<-footprint_data(effort_data$Year,effort_data$Longitude,effort_data$Latitude,effort_data$Gear_type,effort_data$Vessel,Minimum_vessels,Start_year,Years_to_combine,Spatial_resolution_dd$Spatial_resolution,Spatial_resolution_dd$Units, map_projection=map_projection_dd)

#Look at the data
head(example_dd$fishing_effort_data)
##   YEAR GEAR_TYPE   VESSEL LONGITUDE LATITUDE YEAR_GROUP
## 1 1991   Gillnet Vessel_4     169.5     45.5  1991-1995
## 2 1991   Gillnet Vessel_4     169.5       45  1991-1995
## 3 1991   Gillnet Vessel_4     169.5       44  1991-1995
## 4 1991   Gillnet Vessel_4     170.5       44  1991-1995
## 5 1991   Gillnet Vessel_4     169.5       45  1991-1995
## 6 1991   Gillnet Vessel_4     169.5       45  1991-1995
head(example_dd$fishing_footprint_table)
##        YEARS LONGITUDE LATITUDE GEAR_TYPE NumberOfSets NumberOfVessels
## 2  1996-2000       169       42   Gillnet            6               3
## 3  2001-2005       169       42   Gillnet            6               3
## 5  2011-2015       169       42   Gillnet            3               3
## 8  1996-2000     169.5       42   Gillnet            5               4
## 10 2006-2010     169.5       42   Gillnet            4               4
## 11 2011-2015     169.5       42   Gillnet           10               3
example_dd$not_enough_vessels
##            
##             Gillnet Longline Trap
##   1991-1995      37       16    9
##   1996-2000      12       14   27
##   2001-2005       6       25    7
##   2006-2010      20       11   32
##   2011-2015      35        9   33
##   2016-2020      12        9   17
example_dd$years
## [1] "1991-1995" "1996-2000" "2001-2005" "2006-2010" "2011-2015" "2016-2020"
example_dd$spatial_resolution
## [1] 0.5
example_dd$units
## [1] dd
## Levels: dd
example_dd$map_projection
## [1] "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"
#Make the maps
rasters_dd<-footprint_map(example_dd)
## Regions defined for each Polygons
## Regions defined for each Polygons

## Regions defined for each Polygons

## Regions defined for each Polygons

## Regions defined for each Polygons

## Regions defined for each Polygons

## Regions defined for each Polygons

## Regions defined for each Polygons

## Regions defined for each Polygons

## Regions defined for each Polygons

## Regions defined for each Polygons

## Regions defined for each Polygons

## Regions defined for each Polygons

## Regions defined for each Polygons

## Regions defined for each Polygons

## Regions defined for each Polygons

## Regions defined for each Polygons

## Regions defined for each Polygons

Option 2: A spatial resolution 5 nautical mile x 5 nautical mile (8 km x 8 km) and a temporal resolution of the entire time series (1991-present)

To do option 2 run this code.

Spatial_resolution_m<-data.frame(Spatial_resolution=8000,Units="m")

Start_year<-1991
Years_to_combine<-29
Minimum_vessels<-3
#map_projection_m<-"+proj=aea +lat_1=50 +lat_2=58.5 +lat_0=45 +lon_0=-126 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs" #FOR EASTERN NORTH PACIFIC
map_projection_m<-"+proj=utm +zone=59 +ellps=WGS84 +datum=WGS84 +units=m +no_defs" #FOR WESTERN NORTH PACIFIC

example_m<-footprint_data(effort_data$Year,effort_data$Longitude,effort_data$Latitude,effort_data$Gear_type,effort_data$Vessel,Minimum_vessels,Start_year,Years_to_combine,Spatial_resolution_m$Spatial_resolution,Spatial_resolution_m$Units, map_projection=map_projection_m)


#Look at the data
head(example_m$fishing_effort_data)
##   YEAR GEAR_TYPE   VESSEL LONGITUDE LATITUDE YEAR_GROUP
## 1 1991   Gillnet Vessel_4    392000  5048000  1991-2019
## 2 1991   Gillnet Vessel_4    376000  4960000  1991-2019
## 3 1991   Gillnet Vessel_4    376000  4880000  1991-2019
## 4 1991   Gillnet Vessel_4    448000  4864000  1991-2019
## 5 1991   Gillnet Vessel_4     4e+05  4992000  1991-2019
## 6 1991   Gillnet Vessel_4    368000    5e+06  1991-2019
head(example_m$fishing_footprint_table)
##        YEARS LONGITUDE LATITUDE GEAR_TYPE NumberOfSets NumberOfVessels
## 6  1991-2019    456000  4648000   Gillnet            4               3
## 8  1991-2019    344000  4656000   Gillnet            4               4
## 9  1991-2019    352000  4656000   Gillnet            4               3
## 10 1991-2019    360000  4656000   Gillnet            5               4
## 14 1991-2019    384000  4656000   Gillnet            4               3
## 26 1991-2019    480000  4656000   Gillnet            3               3
example_m$not_enough_vessels
##            
##             Gillnet Longline Trap
##   1991-2019    1074     1063 1010
##   2020-2019      73       67   20
example_m$years
## [1] "1991-2019" "2020-2019"
example_m$spatial_resolution
## [1] 8000
example_m$units
## [1] m
## Levels: m
example_m$map_projection
## [1] "+proj=utm +zone=59 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"
rasters_m<-footprint_map(example_m)
## [1] "Not enough vessels to plot 2020-2019 Gillnet data"
## [1] "Not enough vessels to plot 2020-2019 Longline data"
## [1] "Not enough vessels to plot 2020-2019 Trap data"
## Regions defined for each Polygons
## Regions defined for each Polygons

## Regions defined for each Polygons

Option 3: A spatial resolution of 0.1 degrees longitude by 0.1 degrees latitude and a temporal resolution of 5 years

To do option 3 run this code.

Spatial_resolution_dd<-data.frame(Spatial_resolution=.1,Units="dd")

Start_year<-1991
Years_to_combine<-5
Minimum_vessels<-3

map_projection_dd<-"+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"

example_dd2<-footprint_data(effort_data$Year,effort_data$Longitude,effort_data$Latitude,effort_data$Gear_type,effort_data$Vessel,Minimum_vessels,Start_year,Years_to_combine,Spatial_resolution_dd$Spatial_resolution,Spatial_resolution_dd$Units, map_projection=map_projection_dd)

#Look at the data
head(example_dd2$fishing_effort_data)
##   YEAR GEAR_TYPE   VESSEL LONGITUDE LATITUDE YEAR_GROUP
## 1 1991   Gillnet Vessel_4     169.6     45.6  1991-1995
## 2 1991   Gillnet Vessel_4     169.4     44.8  1991-1995
## 3 1991   Gillnet Vessel_4     169.4     44.1  1991-1995
## 4 1991   Gillnet Vessel_4     170.3     43.9  1991-1995
## 5 1991   Gillnet Vessel_4     169.7     45.1  1991-1995
## 6 1991   Gillnet Vessel_4     169.3     45.2  1991-1995
head(example_dd2$fishing_footprint_table)
##         YEARS LONGITUDE LATITUDE GEAR_TYPE NumberOfSets NumberOfVessels
## 232 2001-2005     170.2     42.5   Gillnet            3               3
## 334 2001-2005     170.5     42.8   Gillnet            3               3
## 373 2001-2005     170.4     42.9   Gillnet            4               4
## 492 1996-2000     170.3     43.2   Gillnet            3               3
## 505 2011-2015     170.8     43.2   Gillnet            3               3
## 651 2016-2020     169.3     43.6   Gillnet            3               3
example_dd2$not_enough_vessels
##            
##             Gillnet Longline Trap
##   1991-1995     298      371  401
##   1996-2000     409      406  365
##   2001-2005     515      373  511
##   2006-2010     338      470  469
##   2011-2015     381      417  345
##   2016-2020     438      433  421
example_dd2$years
## [1] "1991-1995" "1996-2000" "2001-2005" "2006-2010" "2011-2015" "2016-2020"
example_dd2$spatial_resolution
## [1] 0.1
example_dd2$units
## [1] dd
## Levels: dd
example_dd2$map_projection
## [1] "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"
rasters_dd2<-footprint_map(example_dd2)
## [1] "Not enough vessels to plot 1991-1995 Gillnet data"
## [1] "Not enough vessels to plot 2006-2010 Trap data"
## Regions defined for each Polygons
## Regions defined for each Polygons

## Regions defined for each Polygons

## Regions defined for each Polygons

## Regions defined for each Polygons

## Regions defined for each Polygons

## Regions defined for each Polygons

## Regions defined for each Polygons

## Regions defined for each Polygons

## Regions defined for each Polygons

## Regions defined for each Polygons

## Regions defined for each Polygons

## Regions defined for each Polygons

## Regions defined for each Polygons

## Regions defined for each Polygons

## Regions defined for each Polygons

Option 4: A geodesic hexagonal mesh with resolution level 12 or 13 of ISEA3H grid type (described at https://github.com/r-barnes/dggridR/) and a 5 year temporal resolution

For Option 4, the spatial resolution is quite small. Thus a five year temporal resolution for this example data takes a really long time (for the actual data, it works fine). In this example I set the years to combine to 30 years. and ran this code.

Spatial_resolution_ISEA12<-data.frame(Spatial_resolution=NA,Units="ISEA_12")
Spatial_resolution_ISEA13<-data.frame(Spatial_resolution=NA,Units="ISEA_13")

Start_year<-1991
Years_to_combine<-30
Minimum_vessels<-3

map_projection_dd<-"+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"

example_isea12<-footprint_data(effort_data$Year,effort_data$Longitude,effort_data$Latitude,effort_data$Gear_type,effort_data$Vessel,Minimum_vessels,Start_year,Years_to_combine,Spatial_resolution_ISEA12$Spatial_resolution,Spatial_resolution_ISEA12$Units, map_projection=map_projection_dd)

#Look at the data
head(example_isea12$fishing_effort_data)
##   YEAR GEAR_TYPE   VESSEL        LONGITUDE         LATITUDE YEAR_GROUP
## 1 1991   Gillnet Vessel_4 169.549526545965 45.6075641669836  1991-2020
## 2 1991   Gillnet Vessel_4  169.43278977175 44.8020352964878  1991-2020
## 3 1991   Gillnet Vessel_4 169.352224719948 44.0768162044816  1991-2020
## 4 1991   Gillnet Vessel_4 170.311911869342 43.9044970232828  1991-2020
## 5 1991   Gillnet Vessel_4 169.688572483651 45.0595740285805  1991-2020
## 6 1991   Gillnet Vessel_4 169.353388786495 45.1952298082281  1991-2020
head(example_isea12$fishing_footprint_table)
##        YEARS        LONGITUDE         LATITUDE GEAR_TYPE NumberOfSets
## 8  1991-2020 169.524398059718 42.0053151139495   Gillnet            3
## 12 1991-2020  169.91492152793 42.0347176266591   Gillnet            5
## 13 1991-2020 170.045208308915 42.0442362746439   Gillnet            3
## 16 1991-2020 169.173139171385 42.0581093472728   Gillnet            7
## 17 1991-2020 170.305947873823 42.0628494699364   Gillnet            4
## 18 1991-2020 169.303280498863 42.0684224576021   Gillnet            5
##    NumberOfVessels
## 8                3
## 12               4
## 13               3
## 16               5
## 17               3
## 18               5
example_isea12$not_enough_vessels
##            
##             Gillnet Longline Trap
##   1991-2020     613      617  600
example_isea12$years
## [1] "1991-2020"
example_isea12$spatial_resolution
## [1] 0.08
example_isea12$units
## [1] ISEA_12
## Levels: ISEA_12
example_isea12$map_projection
## [1] "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"
rasters_isea12<-footprint_map(example_isea12)
## Regions defined for each Polygons
## Regions defined for each Polygons

## Regions defined for each Polygons

example_isea13<-footprint_data(effort_data$Year,effort_data$Longitude,effort_data$Latitude,effort_data$Gear_type,effort_data$Vessel,Minimum_vessels,Start_year,Years_to_combine,Spatial_resolution_ISEA13$Spatial_resolution,Spatial_resolution_ISEA13$Units, map_projection=map_projection_dd)

head(example_isea13$fishing_effort_data)
##   YEAR GEAR_TYPE   VESSEL        LONGITUDE         LATITUDE YEAR_GROUP
## 1 1991   Gillnet Vessel_4 169.549526545965 45.6075641669836  1991-2020
## 2 1991   Gillnet Vessel_4  169.43278977175 44.8020352964878  1991-2020
## 3 1991   Gillnet Vessel_4 169.429181765662 44.0558378096207  1991-2020
## 4 1991   Gillnet Vessel_4 170.370450667819 43.9350151192103  1991-2020
## 5 1991   Gillnet Vessel_4 169.747767522988 45.0902675698038  1991-2020
## 6 1991   Gillnet Vessel_4 169.294352346147 45.1643590718433  1991-2020
head(example_isea13$fishing_footprint_table)
##        YEARS        LONGITUDE         LATITUDE GEAR_TYPE NumberOfSets
## 10 1991-2020 170.452758212812 42.0196439381289   Gillnet            4
## 20 1991-2020 169.377040476013 42.0474299180517   Gillnet            3
## 25 1991-2020 169.173139171385 42.0581093472728   Gillnet            4
## 36 1991-2020 169.099298042141 42.0789814573258   Gillnet            3
## 38 1991-2020 169.563736047408 42.0886260058372   Gillnet            4
## 70 1991-2020 169.733651298292 42.1817450593894   Gillnet            3
##    NumberOfVessels
## 10               3
## 20               3
## 25               3
## 36               3
## 38               4
## 70               3
example_isea13$not_enough_vessels
##            
##             Gillnet Longline Trap
##   1991-2020    1824     1860 1807
example_isea13$years
## [1] "1991-2020"
example_isea13$spatial_resolution
## [1] 0.05
example_isea13$units
## [1] ISEA_13
## Levels: ISEA_13
example_isea13$map_projection
## [1] "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"
rasters_isea13<-footprint_map(example_isea13)
## Regions defined for each Polygons
## Regions defined for each Polygons

## Regions defined for each Polygons

Conclusions

For the sample data, there are a lot of grid cells with not enough vessels for each method. The higher resolution data is better for identifying the spatial extent of the footprint (ISEA and 8 km grids), but either the temporal resolution suffers or a lot of grid cells are missing.

If you have any concerns or questions, please let me know. As Takeshige-san mentioned, it is important to note that these data are only to be used within the NPFC science committee and for SAI assessments. Thank you, Chris